package com.ido.otaclient.four;

import android.app.Activity;
import android.content.Intent;

import com.ido.otaclient.base.BasePresenter;
import com.ido.otaclient.base.BaseView;
import com.ido.otaclient.module.Veneer;

import java.util.List;

/**
 * Copyright (c) 2019 深圳市爱都科技有限公司. All rights reserved.
 *
 * @Author: xyb
 * @CreateDate: 2020-02-28 21:27
 * @description
 */
public interface FourToOneContract {


    interface View extends BaseView<Presenter> {//UI

        /**
         * 显示弹框
         */
        void showLoading();

        /**
         * 隐藏弹框
         */
        void hideLoading();

        /**
         * 显示信息
         * @param message
         */
        void showMessage(String message);

        /**
         * 设置bootloader 文件的路径
         * @param bootloaderFilePath
         */
        void setBootloaderFilePath(String bootloaderFilePath);

        /**
         * bootloader 文件的版本
         * @param bootloaderVersion
         */
        void setBootloaderVersion(String bootloaderVersion);

        /**
         * 设置bootloaderPath的文件路径
         */
        String getBootloaderFilePath();

        /**
         * 显示booloader 文件名是否显示
         * @param isVisible
         */
        void showBootloaderName(boolean isVisible);

        /**
         * 设置bootloader文件的名字
         */
        void setBootloaderFileName(String bootloaderFileName);

        /**
         * 获得bootloader的文件的名字
         */
        String getBootloaderFileName();

        /**
         * 获得bootloader 版本信息
         * @return
         */
        String getBootloaderVersion();

        /**
         * 设置特殊文件的路径
         * @param specialFilePath
         */
        void setSpecialFilePath(String specialFilePath);

        /**
         * 设置特殊固件的版本
         * @param specialVersion
         */
        void setSpecialVersion(String specialVersion);

        /**
         * 显示文件名控件
         * @param isVisible
         */
        void showSpecialName(boolean isVisible);

        /**
         * 获得特殊固件的路径
         */
        String getSpecialFilePath();

        /**
         * 设置
         * @param specialFileName
         */
        void setSpecialFileName(String specialFileName);

        /**
         * 获得特殊固件名称
         */
        String getSpecialFileName();

        /**
         * 获得特殊文件的版本
         * @return
         */
        String getSpecialFileVersion();

        /**
         * 字库固件路径
         * @param fontFilePath
         */
        void setFontFilePath(String fontFilePath);

        /**
         * 设置font 字库的版本
         * @param fontVersion
         */
        void setFontVersion(String fontVersion);


        /**
         * 获得字库文件路径
         */
        String getFontFilePath();

        /**
         * 获得字库文件的版本
         * @return
         */
        String getFontFileVersion();

        /**
         * 显示字库文件
         * @param isVisible
         */
        void showFontName(boolean isVisible);

        /**
         * 设置字库文件的名称
         * @param fontFileName
         */
        void setFontFileName(String fontFileName);

        /**
         * 返回字库文件的名称
         */
        String getFontFileName();

        /**
         * 设置新固件的路径
         * @param newFilePath
         */
        void setNewFilePath(String newFilePath);

        /**
         * 获得新固件的路径
         */
        String getNewFilePath();

        /**
         * 设置最新固件版本
         * @param newVersion
         */
        void setNewVersion(String newVersion);

        /**
         * 设置新固件的名称
         * @param newFileName
         */
        void setNewFileName(String newFileName);

        /**
         * 显示新固件名称
         * @param isVisible
         */
        void showNewName(boolean isVisible);

        /**
         * 获得新固件的名称
         */
        String getNewFileName();

        /**
         * 获得新固件的版本
         * @return
         */
        String getNewFileVersion();

        /**
         * 设置压缩文件的路径
         * @param pathFolderZip
         */
        void setPathFolderZip(String pathFolderZip);

        /**
         * 返回zip 文件的路径
         * @return
         */
        String getPathFolderZip();

        /**
         * 获得单板状态的集合
         * @return
         */
        List<Veneer> getVeneerList();

        /**
         * 设置挡板的集合
         * @param veneerList
         */
        void setVeneerList(List<Veneer> veneerList);

        /**
         * 弹出取消框
         */
        void showConfirmCancel();

        /**
         * 返回到上一个activity
         */
        void back();

        /**
         * 设置选择文件之后选择图片控件
         */
        void setIvChooseBootloader();

        /**
         * 设置选择特殊固件的图片选择
         */
        void setIvChooseSpecial();

        /**
         * 设置字库文件的选择
         */
        void setIvChooseFont();

        /**
         * 设置新的
         */
        void setIvChooseNew();

        /**
         * 是否完成
         * @param isComplete
         */
        void setIsComplete(boolean isComplete);

        /**
         * 得到是否全部完成的状态
         * @return
         */
        boolean getIsComplete();

        /**
         * 设置设备id
         */
        void setDeviceId(String deviceId);

        /**
         * 获得设备id
         * @return
         */
        String getDeviceId();
    }

    interface Presenter extends BasePresenter {//功能

        /**
         * 将文件打包成zip
         */
        void fileZip();

        /**
         * 上传固件固件名称与确认上传
         */
        void uploadAndConfirmFile();

        /**
         * 选择文件
         * @param requestCode
         */
        void chooseFile(int requestCode,Activity activity);

        /**
         * 选择文件回调
         * @param act
         * @param requestCode
         * @param resultCode
         * @param data
         */
        void onActivityResult(Activity act, int requestCode, int resultCode, Intent data);

        /**
         * 初始化配置信息
         */
        void initConfig();


    }
}
